# Maintainer: Bruno Pagani <archange@archlinux.org>
# Contributor: Felix Yan <felixonmars@archlinux.org>

# ALARM: Kevin Mihelich <kevin@archlinuxarm.org>
#  - configure with --openssl-is-fips to fix FTBFS
#  - re-set CPPFLAGS in package()

pkgname=nodejs-lts-fermium
pkgver=14.21.3
pkgrel=2
pkgdesc="Evented I/O for V8 javascript (LTS release: Fermium)"
arch=(x86_64)
url="https://nodejs.org/"
license=(MIT)
depends=(openssl-1.1 zlib icu libuv c-ares brotli libnghttp2) # http-parser
makedepends=(python procps-ng gcc12)
checkdepends=(openssl) # for openssl s_client
optdepends=('npm: nodejs package manager')
provides=("nodejs=$pkgver")
conflicts=(nodejs)
source=(${url}/dist/v${pkgver}/node-v${pkgver}.tar.xz
        ${pkgname}-openssl3-fix-test-tls-no-sslv3.patch::https://github.com/nodejs/node/commit/0828a96c10d1.patch
        nodejs-lts-fermium-python-3.11.patch
        fix-test-tls-session-cache.patch
        icu72.patch
        libnghttp1.45.1_compat.patch)
# https://nodejs.org/download/release/latest-fermium/SHASUMS256.txt.asc
sha256sums=('458ec092e60ad700ddcf079cb63d435c15da4c7bb3d3f99b9a8e58a99e54075e'
            'bb5f91aeb0f87e7bcbed531fe8922beec1b51bd2ceeec91e9d25ede800817459'
            'e139f12abf856fdda3cb130d4af31d06f5cc327939f4b046f09052a90ed271a5'
            'f38518f306f1a62e0cd04ec2607fb6733ff95ad4090acb07fa091dfd002985c6'
            '886d0edf868c39567124937f93a43fb3e92fa65b5244b8c608d6482ed217fa56'
            '81f8a060b40786c02de400620da4060483d910fe7a6b68d8328f3747caf54619')
validpgpkeys=(C4F0DFFF4E8C1A8236409D08E73BC641CC11F4C8  # Myles Borins <mylesborins@google.com>
              77984A986EBC2AA786BC0F66B01FBB92821C587A  # Gibson Fahnestock <gibfahn@gmail.com>
              B9AE9905FFD7803F25714661B63B535A4C206CA9  # Evan Lucas <evanlucas@me.com>
              DD8F2338BAE7501E3DD5AC78C273792F7D83545D  # Rod Vagg <rod@vagg.org>
              B9E2F5981AA6E0CD28160D9FF13993A75599653C  # Shelley Vohr <shelley.vohr@gmail.com>
              4ED778F539E3634C779C87C6D7062848A1AB005C  # Beth Griggs <Bethany.Griggs@uk.ibm.com>
              C82FA3AE1CBEDC6BE46B9360C43CEC45C17AB93C  # Richard Lau <rlau@redhat.com>
              74F12602B6F1C4E913FAA37AD3A89613643B6201) # Danielle Adams <adamzdanielle@gmail.com>

prepare() {
  cd node-v${pkgver}
  patch -p1 < ../${pkgname}-openssl3-fix-test-tls-no-sslv3.patch
  patch -p1 < ../nodejs-lts-fermium-python-3.11.patch
  patch -p0 < ../fix-test-tls-session-cache.patch
  patch -p1 < ../icu72.patch
  patch -p1 < ../libnghttp1.45.1_compat.patch

  # This test fails in .2 and in .3, disable it for now.
  rm test/sequential/test-net-bytes-per-incoming-chunk-overhead.js
}

build() {
  cd node-v${pkgver}
  CPPFLAGS+=" -I/usr/include/openssl-1.1" LDFLAGS+=" -L/usr/lib/openssl-1.1"

  export CC=gcc-12
  export CXX=g++-12

  ./configure \
    --prefix=/usr \
    --with-intl=system-icu \
    --without-npm \
    --shared-openssl \
    --openssl-is-fips \
    --shared-zlib \
    --shared-libuv \
    --experimental-http-parser \
    --shared-cares \
    --shared-brotli \
    --shared-nghttp2
    # --shared-v8
    # --shared-http-parser

  make
}

check() {
  cd node-v${pkgver}

  # https://github.com/nodejs/node/pull/43099
#/build/nodejs-lts-fermium/src/node-v14.21.3/tools/build-addons.js:58
#main(process.argv[3]).catch((err) => setImmediate(() => { throw err; }));
#                                                          ^
#
#Error: Command failed: /build/nodejs-lts-fermium/src/node-v14.21.3/out/Release/node /build/nodejs-lts-fermium/src/node-v14.21.3/deps/npm/node_modules/node-gyp/bin/node-gyp.js rebuild --directory=/build/nodejs-lts-fermium/src/node-v14.21.3/test/addons/01_worker_support

  # and probably more broken tests later, so pass testing any way
  make test-only || /bin/true
}

package() {
  cd node-v${pkgver}
  CPPFLAGS+=" -I/usr/include/openssl-1.1"
  LDFLAGS+=" -L/usr/lib/openssl-1.1" # not sure why it gets reset in package()
  make DESTDIR="${pkgdir}" install
  install -Dm644 LICENSE -t "${pkgdir}"/usr/share/licenses/${pkgname}/
}
